const config = require('../configure')
const baseWebpackConfig = require('./base.config')
const { merge } = require('webpack-merge')
const nodeExternals = require('webpack-node-externals')
const VueSSRServePlugin = require('vue-server-renderer/server-plugin')

module.exports = merge(baseWebpackConfig, {
  outputDir: config.serveOutpueDir,
  css: {
    // https://github.com/webpack-contrib/mini-css-extract-plugin/issues/90
    extract: false
  },
  configureWebpack: {
    entry: config.serveInputDir,
    // 服务端调用node
    target: 'node',
    output: {
      // 使用node风格导出
      libraryTarget: 'commonjs2'
    },
    // 外置化应用程序依赖模块。可以使服务器构建速度更快，
    // 并生成较小的 bundle 文件。
    externals: nodeExternals({
      allowlist: [/\.css$/, /\.png$/, /\?vue&type=style/]
    }),

    optimization: {
      splitChunks: false
    },

    plugins: [
      // 此插件在输出目录中
      // 生成 `vue-ssr-client-manifest.json`。
      new VueSSRServePlugin({
        filename: config.serveBundleFileName
      })
    ]
  }
  
})
